springboot集成hbase,无需xml配置文件 |
您所在的位置:网站首页 › springboot hbasetemplate › springboot集成hbase,无需xml配置文件 |
网上的资料都是通过xml的方式进行配置,个人觉得不好看,springboot本身就简化了配置文件.所以我摸索这用@bean的方式进行配置. 已经修改,原始方式会造成连接不被重用 1,依赖 2,用@bean生成HbaseTemplate @Bean public HbaseTemplate hbaseTemplate(@Value("${hbase.zookeeper.quorum}") String quorum, @Value("${hbase.zookeeper.port}") String port) { HbaseTemplate hbaseTemplate = new HbaseTemplate(); org.apache.hadoop.conf.Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", quorum); conf.set("hbase.zookeeper.port", port); hbaseTemplate.setConfiguration(conf); hbaseTemplate.setAutoFlush(true); return hbaseTemplate; }其中quorum为hbase集群地址,用逗号分隔就行,port为zookeper的端口号.下图是我的配置,用的主机名,换成ip也是一样的. 这只是最简配置 其他配置只需要在conf中set不同的key就行了
以上配置有bug,会导致重复建立连接 现分享一个新方法 public HbaseTemplate hbaseTemplate(@Value("${hbase.zookeeper.quorum}") String quorum, @Value("${hbase.zookeeper.port}") String port, @Value("${hbase.user:}") String user) throws IOException{ HbaseTemplate hbaseTemplate = new HbaseTemplate(); org.apache.hadoop.conf.Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", quorum); conf.set("hbase.zookeeper.property.clientPort", port); conf.set("hbase.rpc.timeout", "5000"); conf.set("hbase.client.retries.number", "3"); hbaseTemplate.setConfiguration(conf); hbaseTemplate.setAutoFlush(true); hbaseTemplate.setTableFactory(new HTableInterfaceFactory() { private HConnection connection; { org.apache.hadoop.conf.Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", quorum); conf.set("hbase.zookeeper.property.clientPort", port); conf.set("hbase.rpc.timeout", "5000"); conf.set("hbase.client.retries.number", "3"); this.connection = HConnectionManager.createConnection(conf); } @Override public HTableInterface createHTableInterface(org.apache.hadoop.conf.Configuration configuration, byte[] bytes) { try { return this.connection.getTable(bytes); } catch (IOException e) { throw new RuntimeException(e); } } @Override public void releaseHTableInterface(HTableInterface hTableInterface) throws IOException { hTableInterface.close(); } }); return hbaseTemplate; }
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |